常用套件整理 - Visual Studio
TLDR
- 擴充套件管理:建議改用「獨立清單」而非安裝大型同捆包,以避免功能重疊、過時或移除不乾淨的問題。
- 字型選擇:推薦使用
Cascadia Mono,其專為程式碼設計且在高解析度螢幕表現優異;建議避開Cascadia Code以免連字效果(Ligatures)造成符號判讀混淆。 - Entity Framework Core:非建置 Entity 的專案,僅需安裝
Microsoft.EntityFrameworkCore、資料庫提供者(如SqlServer)與Relational即可。 - Log 管理:推薦使用
Serilog,其結構化紀錄(Data)特性遠優於傳統NLog的文字紀錄(Text),建議搭配Seq進行視覺化除錯。 - DI 增強:使用
Scrutor填補微軟原生 DI 不支援組件掃描(Assembly Scanning)的缺口。 - 反向代理:微軟官方的
YARP因與 .NET 高度整合且效能優異,已取代Ocelot成為新專案首選。 - 壓縮套件:若有資料不落地或加密需求,應優先使用原生
System.IO.Compression或記憶體內處理套件,避免呼叫外部7z.exe產生暫存檔導致資安風險。
Visual Studio 擴充套件建議
在 Visual Studio 開發環境中,建議將大型同捆包拆解為獨立套件安裝。
為什麼建議改用獨立清單?
什麼情況下會遇到管理混亂的問題:當你習慣安裝「Productivity Power Tools」或「Web Essentials」等大型同捆包時。
- 內容不透明:無法精確掌握安裝了哪些工具,且內容常隨版本變動。
- 功能重疊與過時:隨 Visual Studio 更新,許多舊功能已由內建功能取代(如 Zen-Coding)。
- 移除不乾淨:移除同捆包時,子套件往往會殘留在環境中。
推薦擴充套件清單
- Productivity Power Tools 相關:
Double-Click Maximize 2022:點擊兩下最大化視窗。Fix Mixed Tabs:偵測並轉換 Tabs 與空格混用的情況。Middle Click Scroll:使用滑鼠滾輪移動文件。Solution Error Visualizer:在 Solution Explorer 顯示錯誤提示。
- Dev Essentials 相關:
File Icons:美化檔案圖示。SVG Viewer:SVG 預覽與編輯優化。Editor Enhancements:強化程式碼排序與編碼功能。Markdown Editor v2:增強 Markdown 編輯體驗。Image Optimizer:圖片壓縮。
- 其他實用工具:
ResXManager:多國語言管理,提供 Excel 表格介面。Editor Guidelines:設定程式碼長度補助線(建議 80, 100, 120 char)。VSColorOutput:讓 Output 視窗的 Build 訊息具備顏色區分。
Visual Studio 環境與編輯器設定
顯示與字型優化
什麼情況下需要調整字型:當你在高解析度螢幕上進行長時間開發時。
- 字型選擇:推薦使用
Cascadia Mono(大小 12)。 - 避免連字困擾:選擇
Cascadia Mono而非Cascadia Code,是為了避免!=自動轉換為≠等連字效果,造成符號判讀上的混淆。 - 螢幕顯示:若操作時滑鼠指標亂跑(常見於 SQL 檔案),可嘗試關閉「為不同像素密度的螢幕最佳化呈現方式」。
編輯器進階設定
- 文件索引標籤:建議將位置設為「左」或「右」以增加垂直閱讀空間,並啟用「依專案或檔案類型著色」。
- C# 進階設定:
- 大綱:開啟「顯示程序行分隔符號」,以白線區隔方法與屬性。
- 淡出:啟用多餘 Using 與變數的淡出提醒。
- 編輯器說明:開啟「為重新指派的變數加上底線」,方便追蹤變數狀態。
NuGet 套件選用策略
資料庫與 ORM
- EF Core:非建置 Entity 的專案,僅需安裝
Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.SqlServer(或對應提供者)以及Microsoft.EntityFrameworkCore.Relational。 - Dapper:輕量化 ORM 首選。
- EF Core Power Tools:提供反向工程圖形化介面,方便從資料庫生成 Model。
日誌與架構增強
- Serilog.AspNetCore:現代化結構式日誌標準。
- 核心觀念:紀錄「資料」而非「字串」。例如
Log.Info("User {Id}", id)可將Id視為可搜尋欄位。 - 推薦組合:搭配
Serilog.Sinks.Seq進行視覺化除錯。
- 核心觀念:紀錄「資料」而非「字串」。例如
- Scrutor:增強微軟原生 DI,補足不支援組件掃描(Assembly Scanning)的缺口。
網路與壓縮
- YARP:微軟官方主導的反向代理套件,效能優於 Ocelot,適合新專案。
- 壓縮套件選擇:
- 若專案已有
NPOI,可直接使用其依賴的SharpZipLib。 - 若無特殊依賴,使用
DotNetZip即可。 - 資安提醒:避免呼叫
7z.exe等外部程式,改用原生System.IO.Compression或記憶體內處理,防止暫存檔殘留導致機密外洩。
- 若專案已有
專案版本號
- MinVer:適合輕量級專案,依據 Git Tag 決定版號。
- GitVersion.MsBuild:適合複雜分支策略(如 GitFlow)的專案。
異動歷程
- 初版文件建立。
- 增加「自動更新延伸模組」設定說明。
- 移除「Code Cleanup on Save」,Visual Studio 2022 已經內建很久,不用特別列出來。
- 更新部分套件的說明。
- 移除過時以及需商用授權的套件。
- 更新 Visual Studio 設定建議,推薦改用 Cascadia 系列字型。
- 新增 YARP、Scrutor 與 MQTTnet 等套件。